/**
 * @PROJECT_NAME: design_patterns
 * @DESCRIPTION: 组合模式 Composite Pattern
 * 定义：组合模式又名整体模式，是用于把一组相似的对象当做一个单一的对象，组合模式依据树型结构来组合对象，
 * 用来表示部分以及整体层次，这种设计模式属于结构型模式，它创建了对象组的树型结构
 * <p>
 * 结构：
 * <p>
 * 抽象跟节点（Component）：定义系统各层次对象的共有方法和属性，可以预定义一些默认行为和属性。
 * <p>
 * 树枝节点（Composite）：定义树枝节点的行为，存储子节点，组合树枝节点和叶子节点形成一个树型结构。
 * <p>
 * 叶子结点（Leaf）：叶子节点对象，其下再无分支，是系统层次遍历的最小单位。
 * <p>
 * 优点:
 * <p>
 * 组合模式可以清楚的定义分层次的复杂对象，表示对象的全部或者部分层次，他让客户端忽略了层次的差异，方便对整个层次结构进行控制。
 * <p>
 * 客户端可以一致的使用一个组合结构或其中单个对象，不必关心处理的单个对象还是整个组合结构，简化了客户端代码，
 * <p>
 * 在组合模式中增加新的树枝节点都很方便，无需对现有类库进行任何修改，符合”开闭原则“
 * <p>
 * 组合模式为树型结构的面向对象实现提供了一种灵活的解决方案，通过叶子节点和树枝节点的递归组合，可以形成复杂的树型结构，但对树型结构的控制却非常简单。
 * <p>
 * 案例与使用场景：菜单目录。
 * 组合模式正是应树型结构而生，所以组合模式的使用场景就是出现树型结构的地方，比如：文件目录显示，多级目录呈现树型结构数据的操作
 * @AUTHOR: CNBruceLee
 * @DATE: 2021/7/29 7:02
 */
package com.bruce.demo2.patterns.demo2.structural.demo11.composite;
